PROCEDURY
Insertovanie
Uprava
Exportovanie

INSERTOVANIE
create or replace procedure insertovanie (id_o number, id_s number, id_a number, nazov long, popisok long) as
begin
 DECLARE 
  ctx raw(64):=null;
  img ORDImage;
  obr_zaoknem_uprava ORDSYS.ORDImage;
  sig_zaoknem_uprava ORDSYS.ORDImageSignature;
    BEGIN
  --Vloen odkazu na obrzek uloen v souborovm systmu
    INSERT INTO dp_obrazok (id_obrazok, id_skupina, id_album_obrazok, title, hodnotenie,  productImage,thumbnail, popis, popis_th, nahlad, nahlad_th, vlozene, info)
    VALUES ( id_o, id_s, id_a, nazov, 0,  
       ORDImage.init('FILE','OBRAZOK_DIR', nazov),
       ORDImage.init(),
      ORDImageSignature.init(),
       ORDImageSignature.init(),
       ORDImage.init(),
        ORDImageSignature.init(), 
        CURRENT_TIMESTAMP, 
        popisok); 
    SELECT productImage INTO img  FROM dp_obrazok  WHERE id_obrazok=id_o  FOR UPDATE;
  
  img.import(ctx);  --Import obrzku do databze
  UPDATE dp_obrazok 
    SET productImage=img 
    WHERE id_obrazok=id_o;
  
  
  SELECT productimage, popis INTO obr_zaoknem_uprava, sig_zaoknem_uprava
FROM dp_obrazok 
WHERE id_obrazok=id_o FOR UPDATE;
-- Generate a signature:
sig_zaoknem_uprava.generateSignature(obr_zaoknem_uprava); -- ziska informace z obrazku
UPDATE dp_obrazok SET popis=sig_zaoknem_uprava
WHERE id_obrazok=id_o;  
Commit;
    
END;
end;

___________________________________

UPRAVOVANIE
create or replace procedure upravovanie (id_o number, funkcia long) as  
begin
  DECLARE
    obj_1 ORDSYS.ORDImage;
    obj_2 ORDSYS.ORDImage;
    obr_zaoknem_uprava ORDSYS.ORDImage;
    sig_zaoknem_uprava ORDSYS.ORDImageSignature;

 
  BEGIN
 SELECT productimage, thumbnail INTO obj_1, obj_2 
  FROM dp_obrazok
  WHERE id_obrazok = id_o FOR UPDATE;
  obj_1.processCopy(funkcia, obj_2);
 UPDATE dp_obrazok SET thumbnail = obj_2 
  WHERE id_obrazok=id_o;
 COMMIT; 
 
  SELECT thumbnail, popis_th INTO obr_zaoknem_uprava, sig_zaoknem_uprava
FROM dp_obrazok 
WHERE id_obrazok=id_o FOR UPDATE;
-- Generate a signature:
sig_zaoknem_uprava.generateSignature(obr_zaoknem_uprava); -- ziska informace z obrazku
UPDATE dp_obrazok SET popis_th=sig_zaoknem_uprava
WHERE id_obrazok=id_o;  
commit;


EXCEPTION
  WHEN ORDSYS.ORDImageExceptions.NULL_DESTINATION THEN
   DBMS_OUTPUT.PUT_LINE('The destination is null');
  WHEN ORDSYS.ORDImageExceptions.DATA_NOT_LOCAL THEN
   DBMS_OUTPUT.PUT_LINE('Data is not local');
  WHEN ORDSYS.ORDImageExceptions.NULL_LOCAL_DATA THEN
   DBMS_OUTPUT.PUT_LINE('dest.source.localData attribute is null');
COMMIT;
END;
END;




____________________________________

EXPORTOVANIE
create or replace procedure exportovanie (id_o number, nazov long) as
 begin
 DECLARE
obj ORDSYS.ORDImage;
ctx RAW(64) :=NULL;
BEGIN
SELECT thumbnail INTO obj FROM dp_obrazok
WHERE id_obrazok = id_o;
obj.export(ctx,'file','OBRAZOK_DIR',nazov);
COMMIT;
EXCEPTION
WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN
DBMS_OUTPUT.PUT_LINE('Source METHOD_NOT_SUPPORTED caught');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('OTHER EXCEPTION caught');
END;
END;


________________________________

create or replace procedure upravovanie_thumb (id_o number, funkcia long) as  
begin
  DECLARE
    obj_1 ORDSYS.ORDImage;
    obj_2 ORDSYS.ORDImage;
    obr_zaoknem_uprava ORDSYS.ORDImage;
    sig_zaoknem_uprava ORDSYS.ORDImageSignature;

 
  BEGIN
 SELECT thumbnail, nahlad INTO obj_1, obj_2 
  FROM dp_obrazok
  WHERE id_obrazok = id_o FOR UPDATE;
  obj_1.processCopy(funkcia, obj_2);
 UPDATE dp_obrazok SET nahlad = obj_2 
  WHERE id_obrazok=id_o;
 COMMIT; 
 
  SELECT nahlad, nahlad_th INTO obr_zaoknem_uprava, sig_zaoknem_uprava
FROM dp_obrazok 
WHERE id_obrazok=id_o FOR UPDATE;
-- Generate a signature:
sig_zaoknem_uprava.generateSignature(obr_zaoknem_uprava); -- ziska informace z obrazku
UPDATE dp_obrazok SET nahlad_th=sig_zaoknem_uprava
WHERE id_obrazok=id_o;  
commit;


EXCEPTION
  WHEN ORDSYS.ORDImageExceptions.NULL_DESTINATION THEN
   DBMS_OUTPUT.PUT_LINE('The destination is null');
  WHEN ORDSYS.ORDImageExceptions.DATA_NOT_LOCAL THEN
   DBMS_OUTPUT.PUT_LINE('Data is not local');
  WHEN ORDSYS.ORDImageExceptions.NULL_LOCAL_DATA THEN
   DBMS_OUTPUT.PUT_LINE('dest.source.localData attribute is null');
COMMIT;
END;
END;

__________________________________


EXPORTOVANIE
create or replace procedure exportovanie_thumb (id_o number, nazov long) as
 begin
 DECLARE
obj ORDSYS.ORDImage;
ctx RAW(64) :=NULL;
BEGIN
SELECT nahlad INTO obj FROM dp_obrazok
WHERE id_obrazok = id_o;
obj.export(ctx,'file','OBRAZOK_DIR',nazov);
COMMIT;
EXCEPTION
WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN
DBMS_OUTPUT.PUT_LINE('Source METHOD_NOT_SUPPORTED caught');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('OTHER EXCEPTION caught');
END;
END;

_____________________________

POROVNANIE OBRAZOKOV

ZHODA FARBY

create or replace procedure zhoda_obr_prodimg_color (id_1 number, id_2 number) as

 begin
 DECLARE

 t_image     ORDSYS.ORDImage;
 c_image    ORDSYS.ORDImage;
 image_sig   ORDSYS.ORDImageSignature;
 compare_sig ORDSYS.ORDImageSignature;
 score FLOAT;
 
BEGIN
 
SELECT productimage, popis INTO t_image, image_sig 
 FROM dp_obrazok 
 WHERE id_obrazok  = id_1;
SELECT productimage, popis INTO c_image, compare_sig 
 FROM dp_obrazok  
 WHERE id_obrazok = id_2;
 -- Compare two images for similarity based on image color:

  
  score:=ORDSYS.ORDImageSignature.evaluateScore(image_sig, 
  compare_sig,'color="1.0",texture="0.0",shape=0,location="0.0"');
  
 DBMS_OUTPUT.PUT_LINE('Score is ' || score);
 update dp_obrazok set zhoda_th = score where id_obrazok = id_2;
 
END;
END;

__________

CELKOVA ZHODA
create or replace procedure zhoda_obr_prodimg_all (id_1 number, id_2 number) as

 begin
 DECLARE

 t_image     ORDSYS.ORDImage;
 c_image    ORDSYS.ORDImage;
 image_sig   ORDSYS.ORDImageSignature;
 compare_sig ORDSYS.ORDImageSignature;
 score FLOAT;
 
BEGIN
 
SELECT productimage, popis INTO t_image, image_sig 
 FROM dp_obrazok 
 WHERE id_obrazok  = id_1;
SELECT productimage, popis INTO c_image, compare_sig 
 FROM dp_obrazok  
 WHERE id_obrazok = id_2;
 -- Compare two images for similarity based on image color:

  
  score:=ORDSYS.ORDImageSignature.evaluateScore(image_sig, 
  compare_sig,'color="1.0",texture="1.0",shape="1.0",location="1.0"');
  
 DBMS_OUTPUT.PUT_LINE('Score is ' || score);
 update dp_obrazok set zhoda_th = score where id_obrazok = id_2;
 
END;
END;
PROCEDURA GENEROVANIE PODPISU
create or replace procedure gen_podpis (id_1 number) as

 begin
 DECLARE

 t_image     ORDSYS.ORDImage;
 image_sig   ORDSYS.ORDImageSignature;
  p_image     ORDSYS.ORDImage;
 nail_sig   ORDSYS.ORDImageSignature;

 
BEGIN
 SELECT productimage, popis INTO p_image, image_sig 
  FROM dp_obrazok
  WHERE id_obrazok = id_1 FOR UPDATE;
 -- Generate a signature:
 image_sig.generateSignature(p_image);
 UPDATE dp_obrazok SET popis = image_sig 
  WHERE id_obrazok = id_1;
  
  SELECT thumbnail, popis_th INTO t_image, nail_sig 
  FROM dp_obrazok
  WHERE id_obrazok = id_1 FOR UPDATE;
 -- Generate a signature:
 nail_sig.generateSignature(t_image);
 UPDATE dp_obrazok SET popis_th = nail_sig 
  WHERE id_obrazok = id_1; 

end;
end;
